package avicit.bdp.oss.utils.auth;

/**
 * @金航数码科技有限责任公司
 * @作者：developer
 * @邮箱：developer@avic-digital.com
 * @创建时间： 2020-11-12
 * @类说明：StrategyEnum
 * @修改记录：
 * @注意事项：
 * @主要功能：测量模式，包括Bucket测量、Object对象策略
 */
public enum StrategyEnum {
    /**
     * Bucket策略，私有。桶的拥有者拥有完全控制权限，其他用户在未经授权的情况下均无访问权限
     */
    PRIVATE("private"),

    /**
     * Bucket策略，公共读。任何用户都可以对桶内用户进行读操作，仅桶拥有者可以进行写操作
     */
    PUBLIC_READ("public_read"),

    /**
     * Bucket策略，公共读写。任何用户都可以对桶内对象进行读、写、删除操作
     */
    PUBLIC_READE_WRITE("public_read_write"),

    /**
     * Object策略，只读模式。被授权用户只能读取Object
     */
    READ_ONLY("read_only"),

    /**
     * Object策略，读写模式。被授权用户可以读、写、删除Object
     */
    READ_WRITE("read_write");

    private final String strategy;

    private StrategyEnum(String strategy) {
        this.strategy = strategy;
    }

    public String getStrategy() {
        return strategy;
    }

    public static StrategyEnum getStrategyType(String type) {
        for (StrategyEnum t : StrategyEnum.values()) {
            if (t.getStrategy().equals(type)) {
                return t;
            }
        }

        return null;
    }
}
